
package clases.general;

import CapaDatos.DataSource;
import CapaDatos.Sql;
import java.awt.Image;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class Personal extends Persona {
    private String titulo;
    private String cargo;
    private String estadocivil;
    private int hijos;
    private String fechaingreso;
    private String fechasalida;
    private double sueldo;
    private String fechanacimiento;
    private String sexo;
    private byte[] foto;
    private Image foto2;
    private String estado;
    private String sql;
    private final DataSource dt;
    

    public Personal() {
        dt=new DataSource();
        
    }

    public String getFechanacimiento() {
        return fechanacimiento;
    }

    public void setFechanacimiento(String fechanacimiento) {
        this.fechanacimiento = fechanacimiento;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public byte[]  getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }

    

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }
    

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getCargo() {
        return cargo;
    }

    public void setCargo(String cargo) {
        this.cargo = cargo;
    }

    public String getEstadocivil() {
        return estadocivil;
    }

    public void setEstadocivil(String estadocivil) {
        this.estadocivil = estadocivil;
    }

    public int getHijos() {
        return hijos;
    }

    public void setHijos(int hijos) {
        this.hijos = hijos;
    }

    public String getFechaingreso() {
        return fechaingreso;
    }

    public void setFechaingreso(String fechaingreso) {
        this.fechaingreso = fechaingreso;
    }

    public String getFechasalida() {
        return fechasalida;
    }

    public void setFechasalida(String fechasalida) {
        this.fechasalida = fechasalida;
    }

    public double getSueldo() {
        return sueldo;
    }

    public void setSueldo(double sueldo) {
        this.sueldo = sueldo;
    }

       
    public void guardarEmpleado(){
    this.guardarPersona();
    sql="INSERT INTO PERSONAL VALUES ('"+this.getCedulaRuc()+"', '"+this.titulo+"', '"
        +this.cargo+"', '"+this.estadocivil+"', "+this.hijos+", '"+this.fechanacimiento+"',"
        + "'"+this.sexo+"', '"+this.fechaingreso+"', '"+this.fechasalida+"', "+this.sueldo+", "
        + "TRUE, '"+this.foto+"')";
    Sql.insertar(sql);
     
    }
    
    public void actualizarEmpleado(){
    this.actualizarPersona();
    sql="UPDATE PERSONAL SET CEDULARUC='"+this.getCedulaRuc()+"', TITULO='"+this.titulo+"', "
            + "CARGO='"+this.cargo+"', ESTADOCIVIL='"+this.estadocivil+"', HIJOS="+this.hijos+", "
            + "FECHANACIMIENTO='"+this.fechanacimiento+"', FECHAINGRESO='"+this.fechaingreso+"', "
            + "FECHASALIDA='"+this.fechasalida+"', SUELDO="+this.sueldo+", FOTO='"+this.foto+"' "
            + "WHERE CEDULARUC='"+this.getCedulaRuc()+"'";
    Sql.actualizar(sql);
    
    }
    
    public boolean ExistenciaEmpleado(String cedula){
    sql="SELECT * FROM PERSONAL JOIN PERSONA "
            + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC "
            + "WHERE PERSONAL.CEDULARUC='"+cedula+"'";   
       return Sql.isExiste(sql);
     }
    public boolean ExistenciaEmpleadoActualizar(String cedula){
        if(cedula!=this.getCedulaRuc()){
    sql="SELECT * FROM PERSONAL JOIN PERSONA "
            + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC "
            + "WHERE PERSONAL.CEDULARUC='"+cedula+"' AND PERSONAL.CEDULARUC!='"+this.getCedulaRuc()+"'";   
       return Sql.isExiste(sql);
     }
        else return false;
    }
    
    public String SqlGeneralPersonal(){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC "
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
    
    public String SqlNombre(String nombre){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC WHERE NOMBRE LIKE '"+nombre+"%'"
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
    
    public String SqlApellido(String apellido){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC WHERE APELLIDO LIKE '"+apellido+"%'"
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
    
    public String SqlSueldo(int sueldo){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC WHERE SUELDO = "+sueldo+""
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
    
    public String SqlFechaIngreso(String fecha){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC WHERE FECHAINGRESO = '"+fecha+"'"
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
    
    public String SqlFechaSalida(String fecha){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC WHERE FECHASALIDA = '"+fecha+"'"
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
    
    public String SqlCargo(String cargo){
     sql="SELECT PERSONAL.CEDULARUC, APELLIDO, NOMBRE, CARGO, FECHAINGRESO, FECHASALIDA, SUELDO, ESTADO "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC WHERE CARGO = '"+cargo+"'"
             + "ORDER BY(PERSONAL.CEDULARUC) DESC";
     return sql;
    }
        
  public void ConsultaEmpleado(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina){
   
    sql=objPaginacion.getPaginacion(sql, pagina, 25);
    Sql.getConsulta(sql, dt);
    
    String []fila;
  
    while(dt.next()){
    fila=new String[8];
    fila[0]=dt.getString(1);
    fila[1]=dt.getString(2);
    fila[2]=dt.getString(3);
    fila[3]=dt.getString(4);
    fila[4]=dt.getString(5);
    fila[5]=dt.getString(6);
    fila[6]=dt.getString(7);
    fila[7]=dt.getString(8);
   
    modelo.addRow(fila);
  

      }
    objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }
    
   public void llenardatosEmpelado(){
    sql="SELECT * FROM PERSONAL WHERE CEDULARUC='"+this.getCedulaRuc()+"'";
    Sql.getConsulta(sql, dt);
    while(dt.next()){
        this.titulo=dt.getString(2);
        this.cargo=dt.getString(3);
        this.estadocivil=dt.getString(4);
        this.hijos=dt.getInt(5);
        this.fechanacimiento=dt.getString(6);
        this.sexo=dt.getString(7);
        this.fechaingreso=dt.getString(8);
        this.fechasalida=dt.getString(9);
        this.sueldo=dt.getInt(10);
        //this.estado=dt.getString(11);
       // try
        //{
       this.foto=(dt.getString(12).getBytes());
        //}catch(IOException e){}
    }
   }
   
   public void listarDocentes(JComboBox cbo) {
        cbo.removeAllItems();
        cbo.addItem("--Seleccione--");
         sql="SELECT CONCAT(APELLIDO,' ',NOMBRE) "
             + "FROM PERSONAL JOIN PERSONA "
             + "ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC "
             + "WHERE CARGO = 'DOCENTE' AND ESTADO=TRUE "
             + "ORDER BY(CONCAT(APELLIDO,' ',NOMBRE)) DESC";
        //System.out.println(sql);
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            cbo.addItem(dt.getString(1));
        }
        cbo.setSelectedIndex(0);

    }
   
    public void sacarCedulaDocente(String docente){
    sql="SELECT PERSONAL.CEDULARUC FROM PERSONA "
            + "JOIN PERSONAL ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
            + "WHERE CONCAT(APELLIDO,' ',NOMBRE)='"+docente+"'";
    Sql.getConsulta(sql, dt);
     while(dt.next()){
       this.setCedulaRuc(dt.getString(1));
     }
    }

   
    private Image ConvertirImagen(byte[] bytes) throws IOException {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
    Iterator readers = ImageIO.getImageReadersByFormatName("jpeg");    
    ImageReader reader = (ImageReader) readers.next();
    Object source = bis;
    ImageInputStream iis = ImageIO.createImageInputStream(source);
    reader.setInput(iis, true);
    ImageReadParam param = reader.getDefaultReadParam();
    return reader.read(0, param);
 }

}   


